#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

//#define FILE_NAME "log.txt"
#define FILE_NAME(number) "log.txt"#number

// //每一个数值对应一个比特位，彼此互不干扰
// #define ONE 0x1     // 1<<0
// #define TOW 0x2     // 1<<1
// #define THREE 0x4   // 1<<2
// #define FOUR 0x8    // 1<<3

// void show(int flags)
// {
//     if(flags & ONE) printf("one\n");
//     if(flags & TOW) printf("tow\n");
//     if(flags & THREE) printf("three\n");
//     if(flags & FOUR) printf("four\n");
// }

int main()
{
    printf("stdin->fd:%d\n",stdin->_fileno);
    printf("stdout->fd:%d\n",stdout->_fileno);
    printf("stderr->fd:%d\n",stderr->_fileno);

    int fd1 = open(FILE_NAME(1), O_WRONLY | O_CREAT | O_APPEND, 0666);
    int fd2 = open(FILE_NAME(2), O_WRONLY | O_CREAT | O_APPEND, 0666);
    int fd3 = open(FILE_NAME(3), O_WRONLY | O_CREAT | O_APPEND, 0666);
    int fd4 = open(FILE_NAME(4), O_WRONLY | O_CREAT | O_APPEND, 0666);
    int fd5 = open(FILE_NAME(5), O_WRONLY | O_CREAT | O_APPEND, 0666);

    printf("%s,%d\n","FILE1",fd1);
    printf("%s,%d\n","FILE2",fd2);
    printf("%s,%d\n","FILE3",fd3);
    printf("%s,%d\n","FILE4",fd4);
    printf("%s,%d\n","FILE5",fd5);

    close(fd1);
    close(fd2);
    close(fd3);
    close(fd4);
    close(fd5);

    // umask(0);
    // //int fd = open(FILE_NAME, O_WRONLY | O_CREAT | O_APPEND, 0666);
    // int fd = open(FILE_NAME,O_RDONLY, 0666);
    // if (fd < 0)
    // {
    //     perror("open");
    //     return 1;
    // }

    // char Buffer[1024];
    // ssize_t num = read(fd,Buffer,sizeof(Buffer)-1);
    // if(num>0) Buffer[num]=0; //系统中直接读取文本的数据，不在乎末尾是什么，之所以加/0是为了在上层显示为字符串类
    // printf("%s",Buffer);

    // int cnt = 5;
    // char outBuffer[64];
    // while (cnt)
    // {
    //     sprintf(outBuffer, "%s:%d\n", "aaaa", cnt--);
    //     // \0作为字符串的结尾，是C语言规定，和文件没有关系
    //     write(fd, outBuffer, strlen(outBuffer)); // 文件中写入字符串，不需要加\0，除非想文件中的值看到\0
    // }

    // close(fd);

    // show(ONE);
    // printf("--------------------\n");

    // show(ONE|THREE);
    // printf("-------------------\n");

    // show(ONE|TOW|THREE|FOUR);
    // printf("--------------------\n");

    // FILE* fp =fopen(FILE_NAME,"w");  //r,w,r+(读写，不存在报错),w+(读写，不存在创建),a(追加),a+(读写，追加打入)
    // if(fp==NULL)
    // {
    //     perror("fopen");
    //     return 1;
    // }

    // int cnt = 5;
    // while(cnt)
    // {
    //     fprintf(fp,"%s:%d\n","hello bit",cnt--);
    // }

    // FILE* fp =fopen(FILE_NAME,"r");
    // if(fp==NULL)
    // {
    //     perror("fopen");
    //     return 1;
    // }
    // char buffer[64];
    // while(fgets(buffer,sizeof (buffer)-1,fp)!=NULL)
    // {
    //     buffer[strlen(buffer)-1]=0;
    //     puts(buffer);
    // }

    // FILE* fp =fopen(FILE_NAME,"a");
    // if(fp==NULL)
    // {
    //     perror("fopen");
    //     return 1;
    // }

    // int cnt = 5;
    // while(cnt)
    // {
    //     fprintf(fp,"%s:%d\n","hello bit",cnt--);
    // }

    // fclose(fp);
     return 0;
}